#pragma once
#include <math.h>
class vector3
{
public:
        vector3(void);
        vector3(double x, double y, double z);
        ~vector3(void);

        double getX(); 
        double getY();
        double getZ();

        void setX(double i);
        void setY(double i);
        void setZ(double i);

        void addX(double i);
        void addY(double i);
        void addZ(double i);

        vector3 operator+(vector3 rhs);
        vector3 operator-(vector3 rhs);
        vector3 operator*(double rhs);
        vector3 operator*(int rhs);
        vector3 operator*(vector3 rhs);
        vector3 operator/(double rhs);
        vector3 operator/(int rhs);
		vector3& operator+=(const vector3 rhs);
		vector3& operator-=(const vector3 rhs);
        bool operator==(vector3 rhs);

        vector3 getVector();
        void normalize();
		vector3 normalized();
        vector3 unitFrom(vector3 v);

		double length();
        double distanceFrom(vector3 v);

        double dot(vector3 i);
        vector3 cross(vector3 i);
		static double angle(vector3 vec1, vector3 vec2);

		static vector3 Up(void);
		static vector3 Right(void);
		static vector3 In(void);
		static vector3 Zero(void);

		double x, y, z;
};
